/**   
* @Title: CustomReceivers.java 
* @author jun chen   
* @date 2015年11月23日 上午10:41:41 
*/
package com.shanghaionstar.xgpush;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

import com.onstar.cn.common.log.LogManager;
import com.onstar.cn.framework.utils.GsonHelper;
import com.shanghaionstar.notification.bean.NotificationConstants;
import com.shanghaionstar.notification.bean.XMPPMessage;
import com.tencent.android.tpush.XGPushBaseReceiver;
import com.tencent.android.tpush.XGPushClickedResult;
import com.tencent.android.tpush.XGPushConfig;
import com.tencent.android.tpush.XGPushManager;
import com.tencent.android.tpush.XGPushRegisterResult;
import com.tencent.android.tpush.XGPushShowedResult;
import com.tencent.android.tpush.XGPushTextMessage;

/**
 * 接收信鸽推送消息
 * @ClassName: CustomReceivers
 * @Description: TODO
 * @author jun chen
 * @date 2015年11月23日 上午10:41:41
 */
public class XgMessageReceivers extends XGPushBaseReceiver {

	/**
	 * Description: 删除标签结果
	 */
	@Override
	public void onDeleteTagResult(Context arg0, int arg1, String arg2) {

	}

	/**
	 * 通知被打开触发的结果
	 */
	@Override
	public void onNotifactionClickedResult(Context context, XGPushClickedResult message) {
		if (context == null || message == null) {
			return;
		}

		// if (message.getActionType() ==
		// XGPushClickedResult.NOTIFACTION_CLICKED_TYPE) {
		// // 通知在通知栏被点击啦。。。。。
		// // APP自己处理点击的相关动作
		// Intent intent = new Intent();
		// intent.setClass(context, LoadingActivity.class);
		// context.startActivity(intent);
		//
		// } else if (message.getActionType() ==
		// XGPushClickedResult.NOTIFACTION_DELETED_TYPE) {
		// // 通知被清除啦。。。。
		// // APP自己处理通知被清除后的相关动作
		//
		// }

	}

	/**
	 * 通知被展示触发的结果，可以在此保存APP收到的通知
	 */
	@Override
	public void onNotifactionShowedResult(Context context, XGPushShowedResult notifiShowedRlt) {
		if (context == null || notifiShowedRlt == null) {
			return;
		}
	}

	/**
	 * 注册结果
	 * 
	 * @param context
	 *            APP上下文对象
	 * @param errorCode
	 *            错误码，{@link XGPushBaseReceiver#SUCCESS}表示成功，其它表示失败
	 * @param message
	 *            注册结果返回
	 */
	@Override
	public void onRegisterResult(Context context, int errorCode, XGPushRegisterResult message) {
		if (context == null || message == null) {
			return;
		}
		String text = "";
		if (errorCode == XGPushBaseReceiver.SUCCESS) {
			text = message + "注册成功";
			try {
				// 设置tag
				XGPushManager.setTag(context, XGPushConfig.getToken(context));
				String token = XGPushConfig.getToken(context);
				LogManager.getInstance(context).d("token:" + token);
			} catch (Exception e) {
				LogManager.getInstance(context).d("error:" + e.getMessage());
			}

		} else {
			text = message + "注册失败,错误码:" + errorCode;
		}
		LogManager.getInstance(context).d("text:" + text);
	}

	/**
	 * 设置标签结果
	 */
	@Override
	public void onSetTagResult(Context context, int arg1, String token) {
		try {
			LogManager.getInstance(context).d("TPush:" + "arg1:" + arg1 + "token:" + token);
		} catch (Exception e) {
			LogManager.getInstance(context).d("TPush" +  e.getMessage());
		}

	}

	/**
	 * 收到消息
	 */
	@Override
	public void onTextMessage(Context context, XGPushTextMessage message) {
		LogManager.getInstance(context).d("xg,message.getContent:" + message.getContent());
		LogManager.getInstance(context).d("xg,message.getCustomContent:" + message.getCustomContent());
//		XGLocalMessage localMessage=new XGLocalMessage();localMessage.setContent(message.getContent());
//		XGPushManager.addLocalNotification(context, localMessage);

//		NotificationMessageEntity notificationMessageEntity= JsonParseUtil.JsonToBean(NotificationMessageEntity.class,message.getCustomContent());
//		notificationMessageEntity.setContent(message.getContent());
//		Intent intent = new Intent();
//		intent.setAction(NotificationConstants.RECEIVER_NAME);
//		Bundle bundle = new Bundle();
//		bundle.putSerializable("message", notificationMessageEntity);
//		intent.putExtras(bundle);
//		context.sendBroadcast(intent);
		
		XMPPMessage notificationMessageEntity= GsonHelper.fromJson(message.getCustomContent(),XMPPMessage.class);
		notificationMessageEntity.setContent(message.getContent());
		Intent intent = new Intent();
		intent.setAction(NotificationConstants.RECEIVER_NAME);
		Bundle bundle = new Bundle();
		bundle.putSerializable("message", notificationMessageEntity);
		intent.putExtras(bundle);
		context.sendBroadcast(intent);
	}

	/**
	 * 反注册结果
	 */
	@Override
	public void onUnregisterResult(Context context, int arg1) {

	}

}
